<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <link rel="Stylesheet" type="text/css" href=
  "../../default.css" />
  <meta http-equiv="Content-Type" content=
  "text/html; charset=utf-8" />

  <title>API Активации</title>
  <style type="text/css">
/*<![CDATA[*/
                th {text-align:left;}
                table {border-collapse:collapse; margin-top: 4px;}
                td,th {border: 1px solid #B0B0B0; padding-left:10;padding-right:10;}
    /*]]>*/
  </style>
</head>

<body>
  <h1>API Активации</h1>

  <p>API Активации содержит всего 4 функции. Две предназначены для
  онлайн-активации и две для оффлайн, когда на компьютере
  отсутствует доступ в Интернет. API Активации предназначено для
  взаимодействия с Web License Manager, так что разработчику все
  равно необходимо вызывать API системы лицензирования, чтобы
  использовать серийные номера, полученные от WebLM.</p><strong id=
  "VMProtectActivateLicense">VMProtectActivateLicense</strong>

  <p>Функция передает код активации на сервер и возвращает серийный
  номер, подходящий для этого конкретного компьютера. В противном
  случае возвращается <a href="#codes">код ошибки</a>.</p>
  <pre class="code">int VMProtectActivateLicense(const char *code, char *serial, int size);
</pre>

  <p>Параметр <strong>code</strong> содержит код активации, который
  получен от Web License Manager в процессе покупки лицензии.
  Параметр <strong>serial</strong> указывает на блок памяти размера
  <strong>size</strong>, в который будет помещен сгенерированный
  WebLM серийный номер.</p><strong id=
  "VMProtectDeactivateLicense">VMProtectDeactivateLicense</strong>

  <p>Функция передает серийный номер на сервер для деактивации.
  Возможные коды возврата перечислены <a href=
  "#codes">ниже</a>.</p>
  <pre class="code">int VMProtectDeactivateLicense(const char *serial);
</pre>

  <p>Параметр <strong>serial</strong> содержит серийный номер (не
  код активации), полученный ранее от WebLM в процессе
  активации.</p><strong id=
  "VMProtectGetOfflineActivationString">VMProtectGetOfflineActivationString</strong><br />

  <strong id=
  "VMProtectGetOfflineDeactivationString">VMProtectGetOfflineDeactivationString</strong>

  <p>Эти две функции работают практически аналогично двум
  предыдущим с той лишь разницей, что они не пытаются подключиться
  к серверу WebLM. Вместо этого они возвращают блок текста, который
  необходимо скопировать на компьютер где есть доступ в Интернет,
  открыть там форму оффлайн-активации WebLM и вставить туда этот
  текст.</p>
  <pre class="code">int VMProtectGetOfflineActivationString(const char *code, char *buf, int size);
int VMProtectGetOfflineDeactivationString(const char *serial, char *buf, int size);
</pre>

  <p>Параметры <strong>code</strong> и <strong>serial</strong>
  аналогичны параметрам онлайн-версий функций, параметр
  <strong>buf</strong> должен указывать на буфер размером 1000 байт
  или больше, туда будет скопирован текстовый блок для формы
  оффлайн-активации. Возможные коды ошибок перечислены <a href=
  "#codes">ниже</a>.</p>

  <h3 id="codes">Возможные Коды Ошибок</h3>

  <table border="1" cellspacing="0" cellpadding="2">
    <tr>
      <th>Код</th>

      <th>Значение</th>

      <th>Описание</th>
    </tr>

    <tr>
      <td>ACTIVATION_OK</td>

      <td>0</td>

      <td>Активация прошла успешно, переменная
      <strong>serial</strong> содержит серийный номер.</td>
    </tr>

    <tr>
      <td>ACTIVATION_SMALL_BUFFER</td>

      <td>1</td>

      <td>Буфер для серийного номера слишком маленький. Минимальный
      размер буфера вычисляется по формуле: bits / 8 * 3 / 2 + N,
      где bits - длина RSA ключа в битах, а N - "константа
      безопасности" - дополнительное количество байт на случай
      переносов строк и прочих спец-символов. Рекомендуется
      использовать как минимум 10.</td>
    </tr>

    <tr>
      <td>ACTIVATION_NO_CONNECTION</td>

      <td>2</td>

      <td>Модуль активации не смог подключиться к Web License
      Manager.</td>
    </tr>

    <tr>
      <td>ACTIVATION_BAD_REPLY</td>

      <td>3</td>

      <td>Сервер активации вернул неожиданный результат. Это
      означает проблемы конфигурации сервера, неправильный url
      сервера активации или попытку взлома.</td>
    </tr>

    <tr>
      <td>ACTIVATION_BANNED</td>

      <td>4</td>

      <td>Этот код активации заблокирован на сервере производителем 
      ПО через интерфейс WebLM (например, из-за
      утечки кода активации с пиратской копией). Не путать с ACTIVATION_ALREADY_USED.</td>
    </tr>

    <tr>
      <td>ACTIVATION_CORRUPTED</td>

      <td>5</td>

      <td>Что-то пошло совсем не так. Ошибка выдается системой
      самопроверки модуля активации и с высокой вероятностью
      означает попытку взлома. В случае получения этой ошибки
      дальнейшие операции с серийными номерами и активацией не
      могут считаться безопасными.</td>
    </tr>

    <tr>
      <td>ACTIVATION_BAD_CODE</td>

      <td>6</td>

      <td>Данный код не найден в базе данных сервера активаций.
      Возможно пользователь ошибся при вводе кода, так что можно
      попросить его проверить правильность ввода данных.</td>
    </tr>

    <tr>
      <td>ACTIVATION_ALREADY_USED</td>

      <td>7</td>

      <td>Счетчик активаций этого кода дошел до нуля и дальнейшие
      активации невозможны. Это не обозначает, что код плохой или
      заблокирован - код хороший. Пользователю нужно связаться с
      производителем ПО и докупить необходимое количество лицензий
      или же деинсталлировать программу на других компьютерах,
      чтобы увеличить значение счетчика в базе данных.</td>
    </tr>

    <tr>
      <td>ACTIVATION_SERIAL_UNKNOWN</td>

      <td>8</td>

      <td>Ошибка деактивации. Означает, что данный серийный
      номер не найден в базе данных сервера. Соответственно,
      деактивация не может быть проведена успешно.</td>
    </tr>

    <tr>
      <td>ACTIVATION_EXPIRED</td>

      <td>9</td>

      <td>Ошибка активации. Означает, что период действия кода активации истек.</td>
    </tr>

    <tr>
      <td>ACTIVATION_NOT_AVAILABLE</td>

      <td>10</td>

      <td>Ошибка означает, что активация/деактивация недоступна.</td>
    </tr>

  </table>

  <h3>Маленькие хитрости</h3>

  <p>API Активации достаточно простое, так что с ним не должно
  возникнуть сложностей. Не забудьте предоставить пользователям
  интерфейс для оффлайн-активации, если онлайн-активация
  завершилась неудачей из-за проблем с доступом в интернет. Также
  не забывайте, что API Активации не сохраняет полученный серийный
  номер и не передает его модулю лицензирования - это задача
  разработчика. Нет необходимости вызывать API Активации при каждом
  запуске приложения - достаточно вызвать его один раз, получить
  серийный номер от WebLM, сохранить его в удобном месте и в
  дальнейшем использовать только его.</p><br />
  <br />
  <br />
  <br />
  <br />
  <hr noshade="noshade" size="1" />

  <div align="center">
    © 2006-2015 Copyright VMProtect Software
  </div>
</body>
</html>
